#ifndef INVENTAIRE_H
#   define INVENTAIRE_H




/**
 * \struct objet inventaire.h
 * Element de l'inventaire (voir la structure inventaire)
 */
struct objet
{
    /** id de l'objet */
    unsigned int id;
    /** nombre d'exemplaires possedes */
    unsigned int quantite;
    /** pointeur vers l'element suivant */
    struct objet* suiv;
};



/**
 * \struct inventaire inventaire.h
 * Liste chainee contenant les objets possedes par le joueur.\n
 * Les objets qu'il ne possede plus y restent, mais avec quantite = 0.
 * Ainsi, aucune suppression d'element n'est necessaire avant la destruction
 * de la liste.\n
 * Notez que les objets sont inseres dans cette liste par ordre d'id croissant.
 */
struct inventaire
{
   struct objet* prem;
};



/**
 * \fn void init_inventaire(struct inventaire* invent)
 * \brief Initialise un inventaire
 *
 * \param[out] invent L'adresse de l'inventaire a initialiser
 */
void init_inventaire(struct inventaire* invent);



/**
 * \fn void detruire_inventaire(struct inventaire* invent)
 * \brief Detruit un inventaire
 *
 * \param[out] invent L'adresse de l'inventaire a detruire
 */
void detruire_inventaire(struct inventaire* invent);



/**
 * \fn char ajouter_exemplaires(struct inventaire* invent, const unsigned int id,
                                const unsigned int quantite)
 * \brief Ajoute un nombre donne d'exemplaires d'un objet donne a un inventaire
 *
 * \param[in,out] invent L'adresse de l'inventaire concerne
 * \param[in] id L'id de l'objet a ajouter
 * \param[in] quantite Nombre d'exemplaires a ajouter
 * \return VRAI si l'objet est nouveau dans l'inventaire (s'il
 *         n'y figurait pas encore), FAUX sinon
 *
 * \warning Cette fonction veille a ce que le joueur ne puisse pas posseder
 *          plus de MAX_Q_OBJET exemplaires du meme objet.
 */
char ajouter_exemplaires(struct inventaire* invent, const unsigned int id,
                         const unsigned int quantite);



/**
 * \fn void enlever_exemplaires(struct inventaire* invent, const unsigned int id,
                                const unsigned int quantite)
 * \brief Enleve un nombre donne d'exemplaires d'un objet donne a un inventaire
 *
 * \param[in,out] invent L'adresse de l'inventaire concerne
 * \param[in] id L'id de l'objet a enlever
 * \param[in] quantite Nombre d'exemplaires a enlever
 *
 * \warning Veillez a n'appeler cette fonction qu'avec des id d'objets se
 *          trouvant dans l'inventaire ! De plus, sachez que cette fonction ne
 *          controle pas un eventuel passage en negatif de la quantite.
 */
void enlever_exemplaires(struct inventaire* invent, const unsigned int id,
                         const unsigned int quantite);


#endif /* INVENTAIRE_H */
